package com.katze.boot.plugins.redis.service;

import com.katze.boot.system.domain.User;

import java.util.Set;
import java.util.function.Function;

public interface CacheService {

    User saveUser(User user);

    /**
     * 从缓存中获取用户
     *
     * @param username 用户名
     * @return User
     */
    User getUser(String username, Function<String, User> databaseSelector);


    /**
     * 删除用户信息
     *
     * @param username 用户名
     */
    void clearUserCache(String username);

    /**
     * 缓存用户Token信息
     */
    String saveToken(String key, String value, long timeout);

    /**
     * 获取用户token
     */
    String getToken(String key);

    /**
     * 删除用户token
     */
    Boolean deleteToken(String key);

    /**
     * 添加在线用户
     */
    Boolean saveActiveUser(String value, double score);

    /**
     * 获取全部在线用户
     */
    Set<String> getAllActiveUser();

    /**
     * 删除指定在线用户
     */
    Long deleteActiveUser(String value);

    /**
     * 清除过时在线用户信息
     */
    Long clearInvalidActiveUser();
}
